package com.cskaoyan.javase.array._5operation._1get;

/**
 * @description: 求数组元素中的最值
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 如何求数组元素的最值?
 * 先假设某个元素是最值,然后逐一去比较(遍历),最终得到最值
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 23, 32, 32, 23, 23, 32, 23, 12, 12, 12, -314, 12, 31, 99999, 21312, 213};
        //arr = new int[]{};
        //arr = null;
        System.out.println(getMaxValue(arr));
        System.out.println(getMinValue(arr));
    }

    //求最大值
    public static Integer getMaxValue(int[] arr) {
        //通过判断排除长度为0和为null的数组
        //下述写法是固定的
        if (arr == null || arr.length == 0) {
            System.out.println("友好提示!!!~~");
            //Integer是int类型的包装类,包装类可以和对应的基本数据类型互相转换
            //这里return是不好写的,不知道写什么
            /**
             * 解决方法:
             *      1.抛出异常(后面再学)
             *      2.把返回值类型从int改成Integer
             */
            return null;
        }
        //1.先假设第一个元素是最大值
        int max = arr[0];
        //2.遍历数组,逐一比较
        for (int num : arr) {
            //逐一比较判断
            //较大的成为新的最大值
            if (num > max) max = num;

        }
        //3.得出最大值
        return max;
    }

    //求最小值
    public static int getMinValue(int[] arr) {
        int min = arr[0];
        //遍历可以从第二个元素开始
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < min) min = arr[i];
        }
        return min;
    }
}
